Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2014, 15:21
Интересующийся
Отправить личное сообщение для xobotyi Посмотреть профиль Найти все сообщения от xobotyi
 
Регистрация: 21.02.2014
Сообщений: 13

Мусор в textarea
есть проблема которую не могу решить, бьюсь дня наверное три уже, гугл отмалчивается.

итак, есть textarea:
<form id="add_comment" method="POST" action="/includes/comments.php">
	<label>Оставить комментарий</label>
	<textarea autocomplete="off" name="text" required></textarea>
	<input type="hidden" name="action" value="add"/>
	<input type="hidden" name="post_id" value="<?=$postData['id']?>"/>
	<input type="submit" value="Отправить" />
</form>

есть код js который аяксово отправляет коммент на сервер:
$('#add_comment').submit(function(e){
	e.preventDefault();
	e.stopPropagation();
	
	$.ajax({
		url: '/includes/comments.php',
		type: 'post',
		data: 'action=add&text='+$('#add_comment textarea').val()+'&post_id=<?=$postData['id']?>',
		dataType: 'text',
		beforeSend: function(){
			$(this).find('input[type="submit"]').attr('disabled', 'disabled');
		},
		success: function(data, textStatus){
			if(data.status == 'OK')
				location.reload();
			else
				$(this).find('input[type="submit"]').removeAttr('disabled');
		}
	});
});


ну так вот, при считывании текста из textarea, множественные пробелы приобретают совершенно ужасный вид, которые невозможно обработать на сервере. Строка
тут коммент, а тут                                               много пробелов

превращается в (это после выполнения htmlentites, со стороны сервера)
Ñ�Ñ�Ñ� комменÑ�, а Ñ�Ñ�Ñ� Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; Â&nbsp; много пÑ�обелов


почему такое происходит и как от этого избавиться - я не знаю. Достоверно известно, что косяк происходит в момент считывания текста из textarea. Если отправляемый текст ручками подменять на что-то еще и отправлять на сервер, все приходит в адекватном виде, а так.. жуть в общем=(

Последний раз редактировалось xobotyi, 21.02.2014 в 15:33.
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2014, 15:36
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

мне кажется проблема с кодировками, какая кодировка стоит у сервера и у файлов?
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2014, 15:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

xobotyi, а где можно вживую посмотреть?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2014, 15:43
Интересующийся
Отправить личное сообщение для xobotyi Посмотреть профиль Найти все сообщения от xobotyi
 
Регистрация: 21.02.2014
Сообщений: 13

Сообщение от jsru_ Посмотреть сообщение
мне кажется проблема с кодировками, какая кодировка стоит у сервера и у файлов?
кодировка страницы: UTF-8 без BOM
кодировка скрипта-обработчика на сервере: UTF-8 без BOM
жесткая кодировка nginx: UTF-8
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2014, 15:44
Интересующийся
Отправить личное сообщение для xobotyi Посмотреть профиль Найти все сообщения от xobotyi
 
Регистрация: 21.02.2014
Сообщений: 13

Сообщение от danik.js Посмотреть сообщение
xobotyi, а где можно вживую посмотреть?
нигде%) развернуто на корпоративной ВПНке
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2014, 15:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,596

Вообще хз что там на сервере, но
encodeURIComponent($('#add_comment textarea').val())
не помешало бы.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2014, 15:50
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Aetae
не помешало бы.
Дык уже ведь в функции $.ajax обрабатывается, не?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2014, 15:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от xobotyi
value="<?=$postData['id']?>"
Надеюсь автор этих строк вкурсе про XSS?

Сообщение от xobotyi
это после выполнения htmlentites, со стороны сервера
То есть до выполнения - все в порядке?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 21.02.2014, 15:54
Интересующийся
Отправить личное сообщение для xobotyi Посмотреть профиль Найти все сообщения от xobotyi
 
Регистрация: 21.02.2014
Сообщений: 13

Сообщение от Aetae Посмотреть сообщение
Вообще хз что там на сервере, но
encodeURIComponent($('#add_comment textarea').val())
не помешало бы.
оно ведь самим аяксом выполняется..
Ответить с цитированием
  #10 (permalink)  
Старый 21.02.2014, 16:03
Интересующийся
Отправить личное сообщение для xobotyi Посмотреть профиль Найти все сообщения от xobotyi
 
Регистрация: 21.02.2014
Сообщений: 13

Сообщение от danik.js Посмотреть сообщение
Надеюсь автор этих строк вкурсе про XSS?


То есть до выполнения - все в порядке?
в каком месте тут XSS уязвимость?)
$postData['id'] - ID записи в бд, эта циферка общедоступна и не скрывается, все что прилетает на сервер от юзера чистится от тегов и прочего мусора, а еще полсотни раз проверяется=)

А касаемо до - нет, не впорядке, php не может выполнять например preg_replace('/\s+/',' ',$comment_text); потому что для php там нет пробелов, там одни мнемоники, два из которых хрен-пойми откуда взялись..

Последний раз редактировалось xobotyi, 21.02.2014 в 16:06.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взять текст из textarea fAmOus Элементы интерфейса 13 11.09.2012 09:29
Растягивание textarea - заполнение доступной высоты в окне danik.js ExtJS 8 19.08.2012 13:43
обновить textarea wp2 Events/DOM/Window 6 03.02.2012 23:44
bbcodes вставляются в чужой textarea foreach Events/DOM/Window 2 30.01.2012 21:15
Resize textarea, в копилку. Robox jQuery 0 17.01.2011 18:05